var commondStr = "";
$(function(){
	
	//计算控制台的高度和宽度
	$width = $('.layui-body').width();
	$height = $('.layui-body').height();
	console.log($width+"---"+$height);
	
	
	//创建websocket连接
	createWebSocket();
});
//--------------------------------------------------------------
//创建Websocket连接
//--------------------------------------------------------------
function createWebSocket(){
	
	//获取服务器socket连接地址
	var wsHost = $("#wsHost").val();
	//连接服务器
	var client =  new WebSocket("ws://"+wsHost);  
	var term  = null;
	
	//刚刚打开连接
	client.onopen = function(evt) { 
		console.log("Connection open ..."); 
	  
		//创建Term的控制台]
		term = new Terminal({
		    cols: Math.floor($width / 7.25),
		    rows: Math.floor($height / 17.42),
		    screenKeys: false,
	        useStyle: true,
	        cursorBlink: true,
	        convertEol: true
		  });
		//打开指定的term
		term.open($("#content_term").empty()[0]);

	    term.write('\x1b[31mWelcome to term.js!\x1b[m\r\n');
	    term.write('Welcome to term.js!');
	    
	    //回车
	    term.write('\r\n');
		//term.on方法就是实时监控输入的字段，
		term.on('data', function(data) {
			//打印到控制台上
			term.write(data);
			
			//获取数据的二进制码
			var byteStr = strToBinary(data);
			//根据二进制码，来获取是那个按钮
			switch(byteStr){
			case "1101":
				console.log(commondStr);
				client.send(commondStr);
				term.write("\r\n");
				commondStr  ="";
				
				//获取这一行的数据
				break;
			case "11":
				//term.write("复制");
				console.log("复制：Ctrl+C");
				break;
			case "10110":
				//获取剪贴板里面的内容
//				var content=window.clipboardData.getData("Text");
				//写到服务器上
				console.log("剪贴板:Ctrl+V");
				break;
			case "1111111":
				//移动前一格，然后删除
				term.write("\b");
			    term.write(binaryToStr("1000 11011 1011011 1001011"));
			    commondStr = commondStr.substr(0,commondStr.length-1);
				break;
			default :
				commondStr += data;
				break;
			}
			
			/*if(data == "\r"){
				//做数据发送到服务器上处理
				//需要获取这一行的数据
				console.log("回车");
			}else{
				
			}*/
			/*if(data == "\x08"){
				console.log("回车删除");
				client.send(data);
			}else if(data == "\x1b"){
				client.send(data);
			}*/
		});
	};

	//接收消息的情况
	client.onmessage = function(evt) {
	  console.log( "Received Message: " + evt.data);
	  //写数据到term 控制台
	  term.write(evt.data);
	  
	  //移动光标
	  //term.write("\b");
	  //term.write("\b [P");
	  
	  //删除
	};
	
	//关闭连接的情况
	client.onclose = function(evt) {
	  console.log("连接关闭");
	}; 
	
	//连接失败的情况
	client.onerror = function(event) {
		console.log("连接失败");
	};
	
	
	//计算控制台的高度和宽度
	$width = $('.layui-body').width();
	$height = $('.layui-body').height();
	

}
//console.log(binaryToStr("110001000010001 100111011101100")); //我们
//console.log(binaryToStr("1000000 100101 100100 101011")); //@%$+  
//将字符串转化为二进制的数据
function strToBinary(str){
    var result = [];
    var list = str.split("");
    for(var i=0;i<list.length;i++){
        if(i != 0){
            result.push(" ");
        }
        var item = list[i];
        //将字符串转化为二进制数据
        var binaryStr = item.charCodeAt().toString(2);
        result.push(binaryStr);
    }   
    return result.join("");
}

//二进制转为字符串
function binaryToStr(str){
    var result = [];
    //
    //通过空格来分开二进制的字符
    var list = str.split(" ");
    for(var i=0;i<list.length;i++){
         var item = list[i];
         //转为asciicode 码
         var asciiCode = parseInt(item,2);
         //转为文字
         var charValue = String.fromCharCode(asciiCode);
         //添加到集合中
         result.push(charValue);
    }
    //返回结果
    return result.join("");
}


//绑定在了body上，也可以绑定在其他可用元素行，但是不是所有元素都支持copy和past事件。  
$("#content_term").bind({  
    copy: function(e) {//copy事件  
        var cpTxt = "复制的数据";  
        var clipboardData = window.clipboardData; //for IE  
        if (!clipboardData) { // for chrome  
            clipboardData = e.originalEvent.clipboardData;  
        }  
        //e.clipboardData.getData('text');//可以获取用户选中复制的数据  
        clipboardData.setData('Text', cpTxt);  
        alert(cpTxt);  
        $('#message').text('Copy Data : ' + cpTxt);  
        return false;//否则设不生效  
    },paste: function(e) {//paste事件  
    	console.log("xx");
        var eve = e.originalEvent  
        var cp = eve.clipboardData;  
        var data = null;  
        var clipboardData = window.clipboardData; // IE  
        if (!clipboardData) { //chrome  
            clipboardData = e.originalEvent.clipboardData  
        }  
        data = clipboardData.getData('Text');  
        /*$('#message').html(data);  */
        console.log("粘贴数据");
        console.log(data);
    }  
});
